Go · gRPC · Postgres
parcel/ship
The carrier changed a rate limit and nobody told us
parcel/ship quotes 14 million shipping rates a day across eleven carriers. When one of them tightened a limit, the failures looked exactly like customer error.
- What they build
- Shipping API for storefronts
- Town
- Raleigh, NC
- Size
- 22 engineers
- 1 in 3,400
- rate requests failing, down from 1 in 90
- 6 → 0
- pages a week between midnight and 6 AM
- 38 ms
- p95 added by tracing every quote
Casey Iyer
Staff engineer, platform, parcel/ship
Grouping is the whole product for us. Eleven carriers failing in eleven different dialects used to be eleven thousand alerts.
parcel/ship sits between a storefront and eleven carriers. A customer asks what a two-pound box costs to send to Tucson; parcel/ship asks eleven APIs, in parallel, and answers in under 400 ms or the checkout page moves on without it.
Carriers are not a stable dependency. They change limits, they change error shapes, and they very rarely send an email about it. In June one of them cut its burst allowance by two thirds overnight. The response was an HTTP 400 with a body that read like a validation failure, so for a day and a half the failures were triaged as bad addresses from customers.
Grouping did the work
What broke the tie was the fingerprint. Eleven thousand of those 400s were one issue, not eleven thousand, and the issue's tags said something no log line had: every one of them carried carrier:atlas and every one arrived in the four minutes after a burst.
- One issue, one owner, routed by CODEOWNERS to the integrations team.
- Traces showed the retry storm the limit was actually punishing.
- A release marker made it obvious the change was not ours.
Where it landed
Failed rate requests went from one in ninety to one in 3,400 — the remainder are genuinely bad addresses. Night pages went to zero, which for a team of twenty-two on a follow-the-sun rotation is the number that decides whether people stay.
Tracing every quote costs parcel/ship 38 ms at p95, and they sample at 20% in peak hours. It is, in their words, the cheapest instrumentation they run.
Catch the next one in four minutes.
Install the SDK, deploy, and watch the first exception arrive grouped, traced and assigned. Free for 5,000 events a month.